package 简单.队列;

import java.util.ArrayDeque;
import java.util.Deque;

/**
 * 你的笔记本键盘存在故障，每当你在上面输入字符 'i' 时，它会反转你所写的字符串。而输入其他字符则可以正常工作。
 * 给你一个下标从 0 开始的字符串 s ，请你用故障键盘依次输入每个字符。
 * 返回最终笔记本屏幕上输出的字符串。
 *
 * @ https://leetcode.cn/problems/faulty-keyboard/description/
 * @date 2024/07/04
 */
public class 故障键盘_2810 {

    public static void main(String[] args) {

    }

    /**
     * 双端队列
     */
    public String finalString(String s) {

        boolean isTail = true;
        Deque<Character> deque = new ArrayDeque<>();
        for (char c : s.toCharArray()) {
            if (c == 'i') {
                isTail ^= true;
                continue;
            }
            if (isTail) {
                deque.addLast(c);
            } else {
                deque.addFirst(c);
            }
        }

        StringBuilder stringBuilder = new StringBuilder();
        if (isTail) {

            while (!deque.isEmpty()) {
                stringBuilder.append(deque.pollFirst());
            }

        } else {
            while (!deque.isEmpty()) {
                stringBuilder.append(deque.pollLast());
            }
        }

        return stringBuilder.toString();
    }

}
